Skip to content

gatekeeper: refresh product page, fix llms.txt routes, add scheduled rebuilds#3

Merged
andybons merged 2 commits into
mainfrom
gatekeeper-refresh
Jul 15, 2026
Merged

gatekeeper: refresh product page, fix llms.txt routes, add scheduled rebuilds#3
andybons merged 2 commits into
mainfrom
gatekeeper-refresh

Conversation

@andybons

Copy link
Copy Markdown
Contributor

What

Fixes from the gatekeeper documentation audit that land in this repo:

  • Stale marketing copy: the "Pluggable Sources" card and the hand-written llms.txt INTRO were missing the process (host command) and gcp-service-account credential sources; both updated, and the INTRO now also mentions the Postgres data plane and LLM policy.
  • Missing feature cards: added Postgres Data Plane, LLM Policy, and Host Gateway cards to the gatekeeper product page, plus the docker pull ghcr.io/majorcontext/gatekeeper:latest install path.
  • llms.txt per-page links 404'd for gatekeeper and keep: the [category]/[slug].md.ts route only existed for moat. Added the missing routes (verified dist/gatekeeper/**/*.md and dist/keep/**/*.md now build; slug generation confirmed byte-identical across the .md/.astro/llms.txt paths).
  • Site staleness: docs are fetched from product repos' HEADs at build time, but nothing triggered rebuilds — the live site had been frozen since June 18, missing all gatekeeper v0.15–v0.17 content. Added a daily schedule cron to deploy.yml.
  • OG images: brand-color square was hardcoded to moat's sky-700 for all products; now per-product (keep amber-700, gatekeeper emerald-700), pixel-verified in the built PNGs, moat unchanged.
  • CLAUDE.md: updated from its moat-only framing to the three-product reality.

Verification

bun install, bun run fetch:docs (pulled all three products including gatekeeper v0.17.0), bunx astro check (0 errors), bun run lint, bun run build (91 pages) — all clean.

andybons added 2 commits July 14, 2026 23:49
- Add process and gcp-service-account credential sources to the
  gatekeeper marketing copy and llms.txt intro, which had drifted from
  the shipped source list
- Add feature cards for the Postgres data plane, LLM policy (Keep),
  and host gateway, plus the ghcr.io container install line, to the
  gatekeeper product page
- Add [category]/[slug].md.ts for gatekeeper and keep, mirroring
  moat's route, fixing 404s on their llms.txt per-page .md links
- Add a daily schedule trigger to the deploy workflow so doc changes
  in the product repos (fetched at build time) get picked up even
  without a push to this repo
- Make the OG image brand square per-product instead of hardcoded to
  moat's sky-700, with sky-700 kept as the fallback
- Update CLAUDE.md's moat-only framing, single-product notes, and
  stale MOAT_DOCS_TOKEN/fetch-script references for the three-product
  reality (AUDIT_SUMMARY.md left as a dated historical artifact)
…efects

The Lighthouse CI check has never passed on this repo (3/3 runs failing,
including runs on unrelated branches before gatekeeper existed), so these
are pre-existing, site-wide defects in shared layout/nav components that
this PR's CI run happens to surface. Fixed properly rather than
suppressed:

- aria-hidden-focus: the docs sidebar <aside> was statically
  aria-hidden="true" even at md+ viewports, where `md:translate-x-0`
  keeps it fully visible and its nav links focusable -- a textbook
  aria-hidden-focus violation. mobile-menu.ts now derives aria-hidden
  from actual visibility (closed AND below the md breakpoint) and sets
  tabindex="-1" on the sidebar's links whenever it's genuinely hidden,
  matching axe's own remediation guidance.

- color-contrast: two independent issues, both failing WCAG AA.
  (1) Shiki's github-dark-dimmed comment color (#768390 on #22272e) is
  3.87:1, short of the 4.5:1 body-text minimum -- fixed globally via a
  shikiConfig transformer that lightens the same hue to #84909b
  (4.61:1), plus the three product homepages' hand-authored terminal
  snippets which duplicate that markup outside the Shiki pipeline.
  (2) The "01"-"08" numeral badges on the three product homepages used
  text-stone-300 dark:text-stone-700, a decorative-but-real-text
  pattern that measured 1.37:1 (light) / 1.70:1 (dark) against a 3:1
  large-text requirement. Bumped to a single text-stone-500, the
  lightest/darkest-common shade that clears 3:1 in both themes
  (4.40:1 light, 3.65:1 dark) while keeping the faint "ghost numeral"
  look.

- errors-in-console: BaseLayout preloaded two Google Fonts files by
  hardcoded, hashed URL. Google rotates those hashes over time, and
  the Newsreader one had gone stale and now 404s on every load. The
  JetBrains Mono preload was equally stale (pointed at an unused v18
  file while v24 is what's actually served) but happened to still
  200. Removed both preloads -- the existing css2 stylesheet link
  already resolves and loads the current font files correctly, so
  nothing is lost, and preconnect hints are kept.

Left as warn (not fixed): network-dependency-tree-insight. The
remaining chain is index.html -> Google Fonts css2 stylesheet -> font
files, which is inherent to using externally-hosted web fonts and
unfixable without self-hosting fonts or inlining all CSS -- both much
larger changes out of scope here. Downgraded just this one assertion
in lighthouserc.json (JSON has no comments, hence this explanation
here) from error to warn; the WARN-level LCP/render-blocking
assertions noted in the CI run were already non-blocking and are
unchanged.

Verified locally: `bunx lhci autorun` exits 0 against the built dist/
(3 runs x 3 URLs), `bun run build`, `bunx astro check`, and
`bun x eslint . --ext .js,.ts,.astro` all pass clean.
@andybons andybons merged commit 32ec4f0 into main Jul 15, 2026
2 checks passed
@andybons andybons deleted the gatekeeper-refresh branch July 15, 2026 12:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant